//-----------------------------------------------------------------------------
//
//      Базовый класс подготовки данных для отправки клиентам
//      (c) РГУПС, ВЖД 29/11/2017
//      Разработал: Ковшиков С. В.
//
//-----------------------------------------------------------------------------
/*!
 * \file
 * \brief Базовый класс подготовки данных для отправки клиентам
 * \copyright РГУПС, ВЖД
 * \author Ковшиков С. В.
 * \date 29/11/2017
 */

#include "abstract-data-engine.h"
#include <QMutexLocker>



//-----------------------------------------------------------------------------
// КОНСТРУКТОР
//-----------------------------------------------------------------------------
AbstractDataEngine::AbstractDataEngine()
    : QObject(Q_NULLPTR)
{

}



//-----------------------------------------------------------------------------
// Деструктор
//-----------------------------------------------------------------------------
AbstractDataEngine::~AbstractDataEngine()
{

}



//-----------------------------------------------------------------------------
// Установить данные, принятые от клиента
//-----------------------------------------------------------------------------
void AbstractDataEngine::setInputBuffer(QByteArray inData)
{
    QMutexLocker locker(&inMutex_);
    inputBuffer_ = inData;
}



//-----------------------------------------------------------------------------
// Установить данные, для отправки клиенту
//-----------------------------------------------------------------------------
void AbstractDataEngine::setOutputBuffer(QByteArray outData)
{
    QMutexLocker locker(&outMutex_);
    outputBuffer_ = outData;
}



//-----------------------------------------------------------------------------
// Вернуть буффер полученный от клиента
//-----------------------------------------------------------------------------
QByteArray AbstractDataEngine::getInputBuffer()
{
    QMutexLocker locker(&inMutex_);
    return inputBuffer_;
}



//-----------------------------------------------------------------------------
// Вернуть буффер, предназначенный для отправки клиенту
//-----------------------------------------------------------------------------
QByteArray AbstractDataEngine::getOutputBuffer()
{
    QMutexLocker locker(&outMutex_);
    return outputBuffer_;
}



//-----------------------------------------------------------------------------
//
//      Класс отсутствия подготовки данных
//      (c) РГУПС, ВЖД 29/11/2017
//      Разработал: Ковшиков С. В.
//
//-----------------------------------------------------------------------------
/*!
 * \file
 * \brief Класс отсутствия подготовки данных
 * \copyright РГУПС, ВЖД
 * \author Ковшиков С. В.
 * \date 29/11/201
 */


//-----------------------------------------------------------------------------
// КОНСТРУКТОР
//-----------------------------------------------------------------------------
NullDataEngine::NullDataEngine()
    : AbstractDataEngine()
{

}



//-----------------------------------------------------------------------------
// Вернуть пустой массив данных
//-----------------------------------------------------------------------------
QByteArray NullDataEngine::getPreparedData()
{
    // ??? !!! FIXME - нужно подумать, возможно стоит возвращать буффер. Тогда данных механизм будет работать всегда по умолчанию
    return QByteArray();
}
